package j2025.j01;

import java.util.ArrayList;
import java.util.List;

public class j0107 {
    /**
     * 22. 括号生成
     * 数字 n 代表生成括号的对数，请你设计一个函数，用于能够生成所有可能的并且 有效的 括号组合。
     */
    int left,right,nn;
    List<String> ret;
    StringBuilder path;
    public List<String> generateParenthesis(int n) {
        left = 0;right = 0;
        nn = n;
        ret = new ArrayList<>();
        path = new StringBuilder();
        dfs();
        return ret;
    }
    public void dfs(){
        if(right==nn){
            ret.add(path.toString());
            return;
        }
        if(left<nn){
            path.append("(");
            left++;
            dfs();
            path.deleteCharAt(path.length()-1);
            left--;
        }
        if(right<left){
            path.append(")");
            right++;
            dfs();
            path.deleteCharAt(path.length()-1);
            right--;
        }
    }
}
